查看原文
其他

从心脏出血到量子安全,OpenSSL到底是怎样的存在?

2017-10-06 阿尔梅诺 安全牛


“心脏出血”引起的轩然大波


很多人仍对2014年4月7日爆发的心脏出血(Heartbleed)漏洞记忆犹新。


一夜之间,全球三分之二的服务器岌岌可危,一个声名不显的团队——OpenSSL让无数的管理员夜不能寐。


在SSL(安全套接层协议)领域,OpenSSL是当之无愧的无冕之王,该团队的“大管家”Steve Marquess在最近的中国行中提出了一个比喻,可以很好地解释他们的工作:


你可以把网络想像成电路,信息就是电流,OpenSSL则像是电线绝缘层,确保电流能安全传输而非四处泄露。


但是,问题在于,用户接触的只是最外层的“电源接口”,因此“OpenSSL对于终端的用户是隐形的、看不到的。”


Steve曾这样描述这种现状:“成百上千的厂商使用它,每台智能手机使用它。每个人都用得理所当然。但是除了我们最忠实的用户社区,我们几乎不为人所知。大多数公司甚至都没提及其产品中使用了OpenSSL。”


这种“隐形”加剧了事件爆发时人们的不理解和愤怒。在众多声音中,有两种针对OpenSSL的攻讦格外响亮,Steve也专门作出了回应。


首先,是OpenSSL公布“心脏出血”漏洞的过程。在Google告知了OpenSSL漏洞之后,该团队没告诉任何主流操作系统维护者和相关厂商,只有开源社区出现了相关传言。传言扩散的第三天,也就是4月6日,OpenSSL才告知了Red Hat,几大操作系统才辗转获知心脏出血漏洞;而直到4月7日早上,OpenSSL才发布了公告。对于如此重大的漏洞,关键厂商居然比媒体知道消息还晚,这确实引发了很多损失和不满。


关于漏洞公开的过程,Steve解释道:“OpenSSL秉承‘负责任地披露’的理念,因此我们不能随便地披露一个问题。一旦出现漏洞,我们会先跟代码发布者合作,了解漏洞的细节,然后再对漏洞的严重程度做评估,比如非常严重、中等、不是那么重要。根据不同的严重性,我们会有不同地的反馈和处理。当然很严重的,我们会越快推送越好,中等则不一定,我们会先跟做操作系统的一些专家打交道,让他们有时间处理。


我们尽可能早地公布漏洞、给系统打补丁。但是只要有第一次提前披露,以后就会有更多人以此要求让我们做披露。而涉及的利益相关方越多,就意味着漏洞泄露的可能性越大。因此,我们只有在最后有了一个确定的版本之后才能真正发布漏洞,并给现有版本打上补丁。有时人们对此不太高兴,但是我们知道提前披露有泄露的风险,所以对此很谨慎。


第二种怨言认为OpenSSL的代码和文档质量太差。约翰霍普金斯大学教授、密码学专家马修·格林指出:“年复一年,OpenSSL累积了太多晦涩难懂的东西。代码质量实在太低,没人有兴趣进行重构。”


对此,作为OpenSSL前身SSLeay创建者、OpenSSL创始人之一的Tim解释说:“其实很简单,每一个开发者都很讨厌写文档,当然我说讨厌这个词肯定措词比较强烈,但确实如此。代码或文档质量上有问题,这些都是事实,但是,为什么我做了近20年的OpenSSL呢?是因为这个软件其实是可以用的,它在这个领域是比较成功的。


Steve还提到了代码的许可问题。“现在的许可一团糟……一直以来,我们希望能够改改许可,但是困难重重,为什么?因为大部分代码不是由个人、实体甚至组织所拥有的,它是由代码的原作者所拥有,这些作者在不同的国家,不同的国家对于许可有不同的使用规定……这个过程需要时间。”


遍布全球的OpenSSL竟然只有两个人


当人们气愤地点开facebook上的链接,想看看OpenSSL究竟是何方神圣的时候,他们才知道,尽管OpenSSL的套件遍布全球,但是他们却穷得出乎人们意料。当“心脏出血”爆发时,OpenSSL甚至只雇得起两名全职员工;和其他技术公司相比,他们简直是“穷困潦倒”!


这种现象的形成和OpenSSL的团队性质有关。


首先,OpenSSL做的是开源代码库,这大大限制了收入途径。对他们来说,他们就像为信仰献身的骑士,这种信仰的核心就是“for free”,对工作的忠诚则使得OpenSSL团队在一些容易挣钱的途径面前划了一条红线。Steve回忆了一件往事,有一次他跟一个没有正规收入的同伴说,漏洞的提前披露意味着一年赚100多万,没想到他的同伴很快用电子邮件拒绝了他,表示这不符合OpenSSL的原则。


其次,OpenSSL的名声仅限于一些专业的小圈子。他们就像是一群废寝忘食的雕刻师,痴迷于创作而疏于宣传。知道他们的人不多,一些人虽然知道他们,却并不知晓他们的窘迫,因此很少有机构或个人会捐款给他们。在心脏出血爆发前,他们甚至没有进行过一次募捐!


凡此种种,让OpenSSL缺少必要的资金雇佣全职员工或管理人员,既没有人力去整理冗杂的代码,也缺乏能力进行快速反应。Steve表情沉重地描述着当时的情况:“OpenSSL规模那么大、复杂程度那么高、影响面那么大,却没有足够的人力保障它的安全,这是个问题。”


Steve:“这几年,我们一直在还债。”


心脏出血事件,对于OpenSSL是个涅槃重生的契机。


虽然背负了种种骂名,但是从某种意义上来说,OpenSSL也从幕后走到了台前,人们开始正视这个看似微小却影响极广的团队。


他们收到了各界的援助,既有机构(比如Linux基金会和锤子科技、华为等企业)的资金支持,也有些个人的小额捐款和代码支援(比如,白山云科技的架构师杨洋在OpenSSL代码贡献榜上位居第十八),以及各种令人鼓舞的声援和反馈。


这个团队一步步地完成了重建和新鲜基因的融合:


他们的全职员工从两名增加到了四名,相识已久但素未谋面的团队成员们在2014年第一次聚在一起,并建立了由14名技术顾问和10名管委会成员组成的决策机制(有8人身兼两职)。


值得重视的是,OpenSSL开始“从系统上清还之前欠下的技术债”,一点点重构和精减现有的代码,并且不断地加入新的代码和功能。他们进行了梳理和筛减,尽可能让内部结构变得不透明,从而避免调用未来数据会发生变化的应用。在此期间他们还完成了第一次重要审计。


下图的黄色曲线代表OpenSSL未解决的问题数量,由于在2014年底OpenSSL加入了新的代码和功能,黄线在这个时间点上产生了大幅度的下降。



OpenSSL现在关心什么?


Steve说,自己“不是英雄主义者”,只是为了“更好的、免费的服务”做着最“现实”的事情。那么,除了“清还技术债”,他们还在做什么?


在第二次会议上(此次中国行是第三次),他们讨论了许可协议。


我们觉得Apache2.0是我们目前能够用的最好的许可体系,它虽然不是尽善尽美,但是目前最好的选择。我们给代码拥有人发了邮件,大部分人都同意了,拒绝的人所写的代码影响也不太大,我们可以进行修改。目前我们正在等最后的回复。


高居OpenSSL代码贡献榜首位的Matt Casewell谈到了即将发布的OpenSSL 1.1.1,该版本最大的特点之一就是支持TLS v1.3协议。TLS(传输层安全协议)是安全套接层协议(SSL)的进化版本,比如在2016年成为网络安全传输新宠的HTTPS,其关键步骤之一就是TLS握手。TLS v1.3比传统的协议的速度更快,更重要的是消除了对一些老旧而衰弱的加密方式的支持,这意味着该协议能更好地对抗BEAST、Lucky 13、FREAK、LogJam等臭名昭著的漏洞攻击手段。


OpenSSL创始人之一的Tim Hudson更关心量子计算。他坦言:量子计算机尚未出现,至今也没有统一的解决方案,但是“就我们安全专家这个社区来说,我们现在已经假设量子电脑很快就要出现,并且希望在它出现之前就建立起量子攻击的抵抗能力”。他提出了一个开源倡议——“开放量子安全(Open Quantum Safe)”,即打造一个名为liboqs的C库,作为可抗量子破解的加密算法。


OpenSSL的“中国力量”、上文提到的白山云科技架构师杨洋则在开发多素数RSA算法,该算法极大缩减了由HTTP向HTTPS迁移过程中的硬件开销。以前,加密流量的应用意味着购买很多新硬件和扩容服务器,这种算法可以在硬件完全没有变化的情况下,仅靠软件算法的优化进一步加强HTTPS握手的能力。


他解释道:“OpenSSL已经公布的官方代码中并没有多素数RSA算法,我们实现并提交了这个功能。该功能会作为一个分支并入OpenSSL里。”


相关阅读

OpenSSL的过去、现在和未来

亡羊补牢, “心脏流血”漏洞后OpenSSL终获资助


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存